/**
 * 树形表格 | 全部展开和收起操作
 * @param tableNode 表格节点
 * @param arr 表格数据
 * @param isExpand 展开和收起操作状态
 */
export const useExpandCollapseTable = (tableNode, arr, isExpand) => {
  if (Array.isArray(arr) && arr.length >= 0) {
    arr.forEach(item => {
      tableNode.toggleRowExpansion(item, isExpand)
      if (item.list) {
        useExpandCollapseTable(item.list, isExpand)
      }
    })
  }
}

/**
 * 监测每一项下的rights是不是为true
 * 如果为true就把menuCode的值存在一个数组里
 * 监测每一项下的list的长度是不是大于零
 * 如果大于零就接着去查找
 * 直到list的长度为零结束
 * 把所有rights为true的哪一项的menuCode的值放在一个数组内返回出去
 * @param data
 * @returns {*[]}
 */
export const useFindMenuCodes = (data) => {
  if (!Array.isArray(data) || data.length === 0) {
    return []
  }
  return data.reduce((acc, item) => {
    // 如果当前项没有子列表或者子列表为空，并且当前项的rights为true，则添加其menuCode到结果数组
    if (!item.list || item.list.length === 0 && item.rights === true) {
      acc.push(item.menuCode)
    } else if (item.list && item.list.length > 0) {
      // 否则，递归查找子列表中的最后一级menuCode
      const childLastLevelMenuCodes = useFindMenuCodes(item.list)
      acc.push(...childLastLevelMenuCodes)
    }
    return acc
  }, [])
}

/**
 * 检测两个数组是否一致
 * @param arr1 数组1
 * @param arr2 数组2
 * @returns {*|boolean}
 */
export const areArraysIdentical = (arr1, arr2) => {
  // 检查长度是否相等
  if (arr1.length !== arr2.length) {
    return false
  }
  // 使用 every 方法检查每个元素是否相等
  return arr1.every((value, index) => value === arr2[index])
}
